/* Triggers y funciones para implementar la herencia de visibilidad rubro art - articulo y rubro pad - entidad
Hay dos parametros que de estar en la configuracion general hacen que los articulos o entidades
copien la visibilidad del rubro en los updates (cuando se cambia el rubro).
Hay excepciones, hay ayuda en Constantes de configuracion
*/

-- DROP FUNCTION public.tg_artr_upd_accesosucursales();

CREATE OR REPLACE FUNCTION public.tg_padr_upd_visibilidad()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
IF new.tipoPadA = 'A' AND (new.accesoUsuarios <> old.accesoUsuarios OR new.accesoSucursales <> old.accesoSucursales) AND
  (SELECT position('EntidadesHeredaVisibilidad' in ini) FROM AMBCFG) > 0 THEN
   UPDATE PAD set accesoUsuarios = new.accesoUsuarios, accesoSucursales = new.accesoSucursales 
   WHERE pad.codpadr = new.cod and (pad.accesoUsuarios = old.accesoUsuarios and pad.accesoSucursales = old.accesoSucursales);
END IF;

RETURN NEW;
END;
$BODY$;

ALTER FUNCTION public.tg_padr_upd_visibilidad()
    OWNER TO abacouser;

DROP TRIGGER IF EXISTS padr_upd_visibilidad ON public.padr;


CREATE TRIGGER padr_upd_visibilidad
    AFTER UPDATE 
    ON public.padr
    FOR EACH ROW
    EXECUTE PROCEDURE public.tg_padr_upd_accesosucursales();

/* ------------------------------------------------------ */

SELECT aaVersion('488.02','488.01');

/* ------------------------------------------------------ */

